
//跨浏览器事件添加
  function addEvent(obj,type,fn){
  	if(typeof obj.addEventListener!="undefined"){
  		obj.addEventListener(type,fn,false);            //W3C
  	}else{
  		if(!obj.event){               //判断是否存在，避免重复创建
  			obj.event={};        //创建一个保存事件的哈希表（散列表）
  		}
  		if(!obj.event[type]){       //判断是否存在，避免重复创建
  			obj.event[type]=[];    //创建一个保存事件处理函数的数组
  		    if(obj["on"+type]){
  			   obj.event[type][0]=fn;  //创建第一个事件处理函数
  		    }
  		}
  		obj.event[type][addEvent.ID++]=fn;  //通过事件计数器从第二个事件开始
  		obj["on"+type]=function(){         //执行所有的事件处理函数
  			for(var i in obj.event[type]){
  			    obj.event[type][i]();
  		    }
  		}
  		
  	}
  }

//跨浏览器的事件移除
  function removeEvent(obj,type,fn){
  	if(obj.removeEventListener){
  		obj.removeEventListener(type,fn,false);
  	}else if(obj.detachEvent){
  		obj.detachEvent("on"+type,fn);
  		fn.call(obj);
  	}
  }

//跨浏览器的事件获取元素
  function getElement(evt){
  	if(evt.target){
  		return evt.target;
  	}else if(window.event.target){
  		return window.event.target;
  	}
  }

//跨浏览器阻止默认行为
  function pre(evt){
  	var e=evt||window.event;
  	if(e.preventDefault){
  		e.preventDefault();           //W3C阻止默认方法
  	}else{
  		e.returnValue=false;        //IE阻止默认方法
  	}
  }

/*//javascript封装库  无法连缀
  var Base={
  	getId:function(id){
  		return document.getElementById(id);
  	},
  	getName:function(name){
        return document.getElementsByName(name);
  	},
  	getTagName:function(tag){
  		return document.getElementsByTagName(tag);
  	},
  }*/


//javascript封装库  可以连缀
//获取节点函数
var $=function(_this){                     //设置一个$ 防止下面效果覆盖  传一个_this进来
	return new Base(_this);
}
function Base(_this){
   this.element=[];                  //先创建一个数组
   if(_this!=undefined){          //_this是一个对象，所以undefined不是字符串
   	this.element[0]=_this;        //让this.element[0]的第一个元素等于_this对象
   }

   //通过ID获取元素节点
   this.getId=function(id){          //定义函数
      this.element.push(document.getElementById(id));     //将其加入数组当中
      return this;                 //返回对象本身，实现连缀
    };

   //通过TagName获取元素节点集合
   this.getTagName=function(tag){
     	var tags=document.getElementsByTagName(tag);
     	for(var i=0;i<tags.length;i++){
     		this.element.push(tags[i]);
     	}
     	return this;
   };

   //通过name获取元素节点，通常是表单
   this.getName=function(name){
      var names=document.getElementsByName(name);
      for(var i=0;i<names.length;i++){
      	this.element.push(names[i]);
      }
      return this;
   };

   //获取数组集合中的某一元素节点 []
   this.getSe=function(num){
	  var ele=this.element[num];
	  this.element=[];
	  this.element[0]=ele;
	  return this;
   };
   
   //获取class节点集合
   this.getClass=function(className,idName){
   	  var node=null;
   	  if(arguments.length==2){
   	  	node=document.getElementById(idName);
   	  }else{
   	  	node=document;
   	  }
   	  var allClass=node.getElementsByTagName("*");  //先获取全部的元素
   	  for(var i=0;i<allClass.length;i++){
   	  	if(allClass[i].className==className){
   	  		this.element.push(allClass[i]);
   	  	}
   	  }
   	  return this;
   };
}

//定义hover()方法   鼠标移入移出事件  
Base.prototype.hover=function(enter,leave){
	for(var i=0;i<this.element.length;i++){
		this.element[i].onmouseenter=enter;
		this.element[i].onmouseleave=leave;
	}
	return this;
}

//定义show()方法  显示
Base.prototype.show=function(){
	for(var i=0;i<this.element.length;i++){
		this.element[i].style.display="block";
	}
	return this;
}

//定义hide()方法  隐藏
Base.prototype.hide=function(){
	for(var i=0;i<this.element.length;i++){
		this.element[i].style.display="none";
	}
	return this;
}

//定义CSS()方法
Base.prototype.css=function(attr,value){  //prototype 为了让Base可以使用需要加上原型
     for(var i=0;i<this.element.length;i++){
        if(arguments.length==1){
        	if(typeof window.getComputedStyle!="undefined"){         //W3C和IE9以上 获取行外CSS样式
        		return window.getComputedStyle(this.element[i],null)[attr];
        	}else if(typeof this.element[i].currentStyle!="undefined"){            //IE8以下
        		return this.element[i].currentStyle[attr];
        	}else{
        		return this.element[i][attr];
        	}
        }
        this.element[i].style[attr]=value;  //[attr]因为attr是字符串
     }
     return this;                        //返回对象本身，实现连缀
}

//定义html()方法
Base.prototype.html=function(word){
	for(var i=0;i<this.element.length;i++){
		if(arguments.length==0){              //判断是否有传参，没有的话返回值
		   return this.element[i].innerHTML;
	    }
		this.element[i].innerHTML=word;
	}
	return this;
}

//定义text()方法
Base.prototype.text=function(txt){
	for(var i=0;i<this.element.length;i++){
		if(arguments.length==0){
		   return this.element[i].innerText||this.element[i].textContent;  //Firefox不支持innerText
	    }
		this.element[i].innerText=txt;
		this.element[i].textContent=txt;
	}
	return this;
}

//定义事件处理方法
Base.prototype.on=function(type,fn){        //type是事件触发名字   ,fn是函数
	var str="on"+type;
	for(var i=0;i<this.element.length;i++){
		var element=this.element[i];
		if(str=="onresize"){                 //判断时候是window触
			window[str]=function(){
				fn();
				if(element.offsetLeft>document.documentElement.clientWidth-element.offsetWidth-1){
					element.style.left=document.documentElement.clientWidth-element.offsetWidth-1+"px";
				}
				if(element.offsetTop>document.documentElement.clientHeight-element.offsetHeight-50){
					element.style.top=document.documentElement.clientHeight-element.offsetHeight-50+"px";
				}
			};         
		}else{
			this.element[i][str]=fn;       //因为.str是字符串， 所以用[str]
			
		}
	}
	return this;
}



//定义添加addClass()方法
Base.prototype.addClass=function(className){
    for(var i=0;i<this.element.length;i++){
    	if(!this.element[i].className.match(new RegExp("(\\s|^)"+className+"(\\s|$)"))){  //因为普通正则不能包含className
            this.element[i].className+=" "+className;
            alert(this.element[i].className);
        }
    }
    return this;
}

//定义添加removeClass()方法
Base.prototype.removeClass=function(className){
	for(var i=0;i<this.element.length;i++){
		if(this.element[i].className.match(new RegExp("(\\s|^)"+className+"(\\s|$)"))){     //假如匹配到
			this.element[i].className=this.element[i].className.replace(new RegExp("(\\s|^)"+className+"(\\s|$)"),""); //替换
		}
	}
	return this;
}

//定义marginAuto()方法  
Base.prototype.marginAuto=function(width,height){            //传入要居中目标的宽度和高度
	var left=(document.documentElement.clientWidth-width)/2;    
    var top=(document.documentElement.clientHeight-height)/2;
	for(var i=0;i<this.element.length;i++){
        this.element[i].style.top=top+"px";
        this.element[i].style.left=left+"px";
	}
	return this;
}

//定义锁屏函数lockScreen()
Base.prototype.lockScreen=function(){
	var width=document.documentElement.scrollWidth;          //宽度要使用浏览器的全屏宽度
	var height=document.documentElement.clientHeight;        //高度是可视高度
	/*document.documentElement.style.overflow="hidden";*/        //清除滚动条
	for(var i=0;i<this.element.length;i++){
		this.element[i].style.width=width+"px";
		this.element[i].style.height=height+"px";
		this.element[i].style.display="block";
	}
	return this;
}

//定义解除锁屏函数unlockScreen()
Base.prototype.unlockScreen=function(){
	document.documentElement.style.overflow="auto";
	for(var i=0;i<this.element.length;i++){
		this.element[i].style.display="none";
	}
	return this;
}

//定义拖拽功能 moveIt()
//拖拽  move 和up是全局区域，整个文档要通用。所以要用document
Base.prototype.moveIt=function(clickTarget){
	for(var i=0;i<this.element.length;i++){
		var clickTarget=document.getElementById(clickTarget);
		var that=this.element[i];
		var target=null;
		if(arguments.length==1){
            target=clickTarget;
		}else{
			target=that;
		}
	    target.onmousedown=function(evt){
           var e=evt||window.event;
           var cutX=e.clientX-that.offsetLeft;          //用鼠标的横向距离减去移动目标到浏览器左边框的横向距离
           var cutY=e.clientY-that.offsetTop;
           document.onmousemove=function(evt){
           	   var e=evt||window.event;
           	   var left=e.clientX-cutX;
           	   var top=e.clientY-cutY;
               if(left<0){
               	  left=0;
               }else if(left>document.documentElement.clientWidth-that.offsetWidth){   //不可以
               	  left=document.documentElement.clientWidth-that.offsetWidth;
               }
               if(top<0){
               	  top=0;
               }else if(top>document.documentElement.clientHeight-that.offsetHeight){
               	  top=document.documentElement.clientHeight-that.offsetHeight;
               }
        	   that.style.left=left+"px";      
        	   that.style.top=top-45+"px";   //再减去45 为了一开始防止抖动
           }
           document.onmouseup=function(){
        	   document.onmousemove=null;               //清空onmousemove事件
        	   document.ommouseup=null;
           }
	    }
	}
	
}